// 引入request请求函数
import { request } from '../../request/request'
// 引入封装的promise函数
import { login, getSetting } from '../../utils/wxAsync'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 控制登录对话框是否显示
    showLoginDialog: false,
    // 用户信息
    userInfo: {},
    // 收藏商品数量
    collectCount: 0,
    // 足迹(浏览历史记录)数量
    footPrintCount: 0
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 从本地缓存中获取用户信息
    const userInfo = wx.getStorageSync('userInfo') || {}
    this.setData({
      userInfo
    })
    // 若用户信息中用户名不存在，即用户信息为空，直接return
    if(userInfo.nickname) {
      this.getCollectCount()
      this.getFootPrintCount()
    } else {
      return
    }
  },
  // 点击头像、未登录、箭头
  handleShowDialog() {
    this.setData({
      showLoginDialog: true
    })
  },
  // 点击阴影区关闭对话框
  handleHideDialog() {
    this.setData({
      showLoginDialog: false
    })
  },
  // 阻止点击事件冒泡
  onDialogBody() {

  },
  // 点击微信登录按钮
  async handleLogin(e) {
    // 获取code
    const { code } = await login()
    // 发送请求，登录
    const res = await request({
      url: '/auth/loginByWeixin',
      method: 'POST',
      data: { code, userInfo: e.detail }
    })
    console.log(res)
    if (res.errno !== 0) {
      wx.showToast({
        title: '微信登录失败',
        icon: 'none',
        image: '',
        duration: 1500,
        mask: true
      })
      return
    }
    // token值和用户信息
    let { token, userInfo } = res.data
    // 将token和用户信息存储至本地缓存数据
    wx.setStorageSync('token', token)
    wx.setStorageSync('userInfo', userInfo)
    this.setData({
      userInfo,
      showLoginDialog: false
    })
    this.getCollectCount()
    this.getFootPrintCount()
  },
  // 发送请求，获取收藏商品数量
  async getCollectCount() {
    const res = await request({url: '/collect/list', data: { typeId: 0 }})
    this.setData({
      collectCount: res.data.count
    })
  },
  // 发送请求，获取足迹
  async getFootPrintCount() {
    const res = await request({url: '/footprint/list'})
    console.log(res)
    this.setData({
      footPrintCount: res.data.count
    })
  }
})